<?php

/*
 * 基础类 只用来被继承
 */

abstract class Base {

	//可设置的变量
	protected $_valid = array();
	
	//错误信息
	protected $_error = '';
	
	/**
	 * 设置配置信息
	 * @param array $config 配置信息
	 * @return object 返回$this
	 */
	public function config($config = array())
	{
		if ($config)
		{
			foreach ($config as $key => $value)
			{
				if (in_array($key, $this->_valid))
				{
					$method = 'set_'.$key;
					if (method_exists($this, $method))
					{
						$this->$method($value);
					}
					else
					{
						$this->$key = $value;
					}
				}
			}
		}
		
		return $this;
	}
	
	/**
	 * 初始化
	 * @return boolean 成功返回TRUE,失败返回FALSE
	 */
	abstract public function init();
	
	/*
	 * 重置配置信息 回复到风平浪静的那一刻
	 * @access	public
	 * @param	$valid bolean 为FALSE只恢复除了$_valid定义的一些，为TRUE全部恢复
	 * @return	void
	 */
	/**
	 * 重置配置信息
	 * @param boolean $valid 为FALSE只恢复除了$_valid定义的一些，为TRUE全部恢复
	 * @return void
	 */
	public function reset($valid = FALSE)
	{
		$resets = get_class_vars(get_class($this));
		
		if ($resets)
		{
			foreach ($resets as $key => $value)
			{
				if ( ! $valid)
				{
					if (in_array($key, $this->_valid))
					{
						continue;
					}
				}
				
				$this->$key = $value;
			}
		}
	}
	
	/**
	 * 设置错误信息
	 * @param string $error 错误信息
	 * @return void
	 */
	public function set_error($error)
	{
		$this->_error = $error;
	}
	
	/**
	 * 返回错误信息
	 * @return string 错误信息
	 */
	public function get_error()
	{
		return $this->_error;
	}

}